package com.sitia.jd.controller;

import com.jd.open.api.sdk.domain.kplunion.promotioncommon.PromotionService.response.get.GetResult;
import com.sitia.common.CustomException;
import com.sitia.common.core.controller.BaseController;
import com.sitia.common.core.domain.AjaxResult;
import com.sitia.common.utils.StringUtils;
import com.sitia.jd.domain.MxOrder;
import com.sitia.jd.domain.dto.JdRebateParamsInfo;
import com.sitia.jd.service.IJdService;
import com.sitia.jd.util.JdUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

/**
 * 访问京东控制器
 *
 * @author lihziqin
 */
@Slf4j
@RestController
@RequestMapping("/jd")
public class JdController extends BaseController {

    @Resource
    private IJdService jdService;

    /**
     * 获取手机验证码
     *
     * @return
     */
//    @GetMapping(value = "/getPhoneVerificationCode")
//    public AjaxResult getPhoneVerificationCode(JdLoginInfoVo vo) {
//        if (StringUtils.isEmpty(vo.getPhone())) {
//            throw new CustomException("请输入手机号");
//        }
//        /**
//         * TODO 60S缓存待做
//         */
//
//        OkHttpClient client = new OkHttpClient().newBuilder()
//                .connectTimeout(1, TimeUnit.SECONDS) // 设置连接超时时间为10秒
//                .build();
//        MediaType mediaType = MediaType.parse("text/plain");
//        RequestBody body = RequestBody.create(mediaType, vo.getPhone());
//        Request request = new Request.Builder()
//                .url("https://52sr147133.goho.co/fsdx")
//                .method("POST", body)
//                .addHeader("User-Agent", "Apifox/1.0.0 (https://apifox.com)")
//                .addHeader("Content-Type", "text/plain")
//                .addHeader("Accept", "*/*")
//                .addHeader("Host", "52sr147133.goho.co")
//                .addHeader("Connection", "keep-alive")
//                .build();
//        try {
//            Response response = client.newCall(request).execute();
//            String jsonResponse = response.body().string();
//            JSONObject jsonObject = JSONObject.parseObject(jsonResponse);
//            Object success = jsonObject.get("success");
//            if ("true".equals(success)) {
//                return AjaxResult.success("发送成功");
//            }
//        } catch (IOException e) {
//            log.error(e.getMessage());
//            throw new RuntimeException(e);
//        }
//
//        return AjaxResult.error("发送失败");
//    }

    /**
     * 获取手机登陆结果
     *
     * @return
     */
//    @GetMapping(value = "/getPhoneLoginResult")
//    public AjaxResult getPhoneLoginResult(JdLoginInfoVo vo) {
//        if (StringUtils.isEmpty(vo.getPhone())) {
//            throw new CustomException("请输入手机号");
//        }
//        if (StringUtils.isEmpty(vo.getCode())) {
//            throw new CustomException("请输入验证码");
//        }
//        String params = JSON.toJSONString(vo);
//        OkHttpClient client = new OkHttpClient().newBuilder()
//                .connectTimeout(1, TimeUnit.SECONDS)  // 设置连接超时时间为1分钟
//                .build();
//        MediaType mediaType = MediaType.parse("application/json");
//        String requestBodyString = String.format("{\r\n    \"phone\": \"%s\",\r\n    \"code\": \"%s\"\r\n}", vo.getPhone(), vo.getCode());
//        RequestBody body = RequestBody.create(mediaType, requestBodyString);
//        Request request = new Request.Builder()
//                .url("https://52sr147133.goho.co/yzm")
//                .method("POST", body)
//                .addHeader("User-Agent", "Apifox/1.0.0 (https://apifox.com)")
//                .addHeader("Content-Type", "application/json")
//                .addHeader("Accept", "*/*")
//                .addHeader("Host", "52sr147133.goho.co")
//                .addHeader("Connection", "keep-alive")
//                .build();
//        try {
//
//
//            Response response = client.newCall(request).execute();
//            String jsonResponse = response.body().string();
//            JSONObject jsonObject = JSONObject.parseObject(jsonResponse);
//            log.info("【手机号登陆结果=》】" + jsonObject.toString());
//            Object success = jsonObject.get("success");
//            Boolean resultCode = Boolean.valueOf(success.toString());
//            if (resultCode) {
//                //验证码正确
//                JSONObject data = jsonObject.getJSONObject("data");
//                Object ck = data.get("ck");
//                if (ObjectUtils.isEmpty(ck)) {
//                    throw new CustomException("获取信息失败，请重新尝试");
//                }
//                vo.setCk(ck.toString());
//            } else {
//                Object message = jsonObject.get("message");
//                throw new CustomException(message.toString());
//            }
//        } catch (Exception e) {
//            if (e.getMessage().equals("验证码输入错误")) {
//                LogUtil.addLog("京东使用验证码登陆失败", "GET", params, "验证码输入错误，请重新尝试", 1);
//                throw new CustomException("验证码输入错误");
//            }
//            log.error(e.getMessage());
//            LogUtil.addLog("京东使用验证码登陆失败", "GET", params, "获取信息失败，请重新尝试", 1);
//            throw new CustomException("获取信息失败，请重新尝试");
//        }
//        String result = JSON.toJSONString(vo);
//        LogUtil.addLog("京东使用验证码登陆成功", "GET", params, result, 0);
//        return AjaxResult.success(vo);
//    }

    @PostMapping("/checkCookieIsOk")
    public AjaxResult updateOrderLoginStatus(@RequestBody MxOrder mxOrder) {
        String userInfo = JdUtils.getJdUser(mxOrder.getCookie());
        if (StringUtils.isEmpty(userInfo)) {
            throw new CustomException("未获取到用户信息");
        }
        return AjaxResult.success("信息正常");
    }

    /**
     * 获取12期
     * @param mxOrder
     * @return
     */
//    @PostMapping("/getCouponsBy12")
//    public AjaxResult getCouponsBy12(@org.springframework.web.bind.annotation.RequestBody MxOrder mxOrder) {
//        if (StringUtils.isEmpty(mxOrder.getCookie())) {
//            throw new CustomException("cookie不能为空");
//        }
//        String cookie = mxOrder.getCookie();
//        OkHttpClient client = new OkHttpClient().newBuilder()
//                .build();
//        MediaType mediaType = MediaType.parse("text/plain");
//        RequestBody body = RequestBody.create(mediaType, "");
//        Request request = new Request.Builder()
//                .url("http://42.194.242.207:5889/log")
//                .post(body)
//                .addHeader("Accept", "*/*")
//                .addHeader("Host", "42.194.242.207:5889")
//                .addHeader("Connection", "keep-alive")
//                .build();
//        try {
//            Response response = client.newCall(request).execute();
//            String logResult = response.body().string();
//            JSONObject logObject = JSONObject.parseObject(logResult);
//            String log1 = logObject.getString("log");
//            String random = logObject.getString("random");
//            GetCouponResultVo coupon = JdUtils.get12Coupon(log1, random, cookie);
//            return AjaxResult.success(coupon);
//        } catch (IOException e) {
//            throw new RuntimeException(e);
//        }

//    }


    /**
     * 获取京东返利信息
     * @param jdRebateParamsInfo
     * @return
     */
    @PostMapping("/getRebateInfo")
    public GetResult getRebateInfo(@RequestBody JdRebateParamsInfo jdRebateParamsInfo) {
        return jdService.getRebateInfo(jdRebateParamsInfo);
    }

}
